/**
 * 
 */
package br.idez.idezJet.integracao.dao;

import java.util.Collection;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.OptimisticLockException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.idez.idezJet.integracao.vo.ItemPedido;

/**
 * @author Moacir Junior
 * 
 */
@Stateless
public class ItemPedidoDAOImpl implements ItemPedidoDAO {

	@PersistenceContext
	private EntityManager em;

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.idez.idezJet.integracao.dao.IdezJetDAO#incluir(java.lang.Object)
	 */
	@Override
	public void incluir(ItemPedido o) throws Exception {
			em.persist(o);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.idez.idezJet.integracao.dao.IdezJetDAO#alterar(java.lang.Object)
	 */
	@Override
	public void alterar(ItemPedido o) throws Exception {
		try{
			em.merge(o);
		}catch(OptimisticLockException ex){
			System.out.println("Sincronizando dado Com banco de dados");
			ItemPedido item = em.find(ItemPedido.class, o.getId());
			item.setVoo(o.getVoo());
			item.setQuantidade(o.getQuantidade());
			this.alterar(item);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.idez.idezJet.integracao.dao.IdezJetDAO#consultar(java.lang.Object)
	 */
	@Override
	public ItemPedido consultar(ItemPedido o) throws Exception {
		return em.find(ItemPedido.class, o.getId());
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.idez.idezJet.integracao.dao.IdezJetDAO#listar()
	 */
	@Override
	public Collection<ItemPedido> listar() throws Exception {
		Query q = em.createQuery("select i from ItemPedido i");
		return q.getResultList();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.idez.idezJet.integracao.dao.IdezJetDAO#listar(java.lang.Object)
	 */
	@Override
	public Collection<ItemPedido> listar(ItemPedido o) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.idez.idezJet.integracao.dao.IdezJetDAO#excluir(java.lang.Object)
	 */
	@Override
	public void excluir(ItemPedido o) throws Exception {
		try{
			em.merge(o);
			em.remove(o);
		}catch(OptimisticLockException ex){
			em.refresh(o);
			this.excluir(o);
			
		}
	}

}
